package base.thread;

/**
 * @author G_Y
 * 2018年3月12日
 * 说明:内存可见性经典测试
 * 线程工作区如果不跟主内存进行交互 则 数据不能进行 同步
 * 调用静态、native方法也能跟主内存交互
 */
public class MainThreadTest {
	private static boolean b = Boolean.FALSE;//volatile 修饰就能及时知道数据的值

	public static void main(String[] args) throws InterruptedException {
		new Thread(() -> {
			int i = 0;
			while (!b) {
				i++;
				/*try {
					Thread.sleep(100);//调用native方法也能跟主内存交互
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}*/
				//System.out.println(1);//调用同步方法也能跟主内存交互
			}
			System.out.println("thread over");
		}).start();
		Thread.sleep(1000);
		b = Boolean.TRUE;
		System.out.println("main over");
	}
	
}
